﻿using Microsoft.SharePoint;
using System;
using System.Data.SqlClient;
using System.Web;
using VPLink2013.Framework;

namespace VPLink2014
{
    public class InitVPContext : IHttpModule
    {
        /// <summary>
        /// You will need to configure this module in the Web.config file of your
        /// web and register it with IIS before being able to use it. For more information
        /// see the following link: http://go.microsoft.com/?linkid=8101007
        /// </summary>
        #region IHttpModule Members

        public void Dispose()
        {
            //clean-up code here.
        }

        public void Init(HttpApplication context)
        {
            // Below is an example of how you can handle LogRequest event and provide 
            // custom logging implementation for it
            context.BeginRequest += new EventHandler(OnBeginRequest);
        }

        #endregion

        public string connectionString = string.Empty;
        public void OnBeginRequest(Object source, EventArgs e)
        {
            //custom logging logic can go here
            
        }

        protected void SetUtilisateurCrt(string loginName, string strFileCacheUtilisateur)
        {
            Utilisateur UtilisateurCrt = FileSerialization.CreateObjFromXML<Utilisateur>(strFileCacheUtilisateur);
            if (UtilisateurCrt == null)
            {
                UtilisateurCrt = new Utilisateur();
                UtilisateurCrt.Login = loginName;
                ContextTrace.AddTrace("UtilisateurCrt.Login : " + UtilisateurCrt.Login);
                if (UtilisateurCrt.Login.ToLower() == @"oredis-vp\clrstrm-admmoss"
                    || UtilisateurCrt.Login.ToLower() == @"oredis-vp\mpbonazzi")
                {
                    UtilisateurCrt.IsDRH = "1";
                }
                else
                {
                    UtilisateurCrt.IsDRH = "0";
                }
                try
                {
                    SPSecurity.RunWithElevatedPrivileges
                    (delegate()
                    {
                        string strSql = "SELECT Email, IsManager, IsInterimManager, IsJedi, Site, Direction, Departement, Service FROM Users WHERE LoginUser = '" + UtilisateurCrt.Login + "'";
                        ContextTrace.AddTrace("strSql : " + strSql);
                        if (!string.IsNullOrEmpty(connectionString))
                        {
                            SqlConnection conn = VPLink2013SqlHelper.GetConnection(connectionString);
                            ContextTrace.AddTrace(string.Format("Connection String 1 : {0}", connectionString));
                            if (conn != null)
                            {
                                SqlCommand command = VPLink2013SqlHelper.GetCommand(conn, strSql);
                                if (command != null)
                                {
                                    SqlDataReader Reader = command.ExecuteReader();
                                    if (Reader.Read())
                                    {
                                        UtilisateurCrt.Email = VPLink2013SqlHelper.GetValueReader(Reader, 0);
                                        UtilisateurCrt.Direction = VPLink2013SqlHelper.GetValueReader(Reader, 5);
                                        UtilisateurCrt.Departement = VPLink2013SqlHelper.GetValueReader(Reader, 6);
                                        UtilisateurCrt.Service = VPLink2013SqlHelper.GetValueReader(Reader, 7);
                                        UtilisateurCrt.IsInterne = "1";
                                        if (UtilisateurCrt.Email.IndexOf("prestataire") > 0)
                                        {
                                            UtilisateurCrt.IsInterne = "0";
                                        }
                                        UtilisateurCrt.IsManager = "0";
                                        if (VPLink2013SqlHelper.GetValueReaderBit(Reader, 1))
                                        {
                                            UtilisateurCrt.IsManager = "1";
                                        }
                                        else
                                        {
                                            if (VPLink2013SqlHelper.GetValueReaderBit(Reader, 2))
                                            {
                                                UtilisateurCrt.IsManager = "1";
                                            }
                                        }
                                        UtilisateurCrt.IsInterimManager = "0";
                                        if (VPLink2013SqlHelper.GetValueReaderBit(Reader, 2))
                                        {
                                            UtilisateurCrt.IsInterimManager = "1";
                                        }
                                        UtilisateurCrt.IsJedi = "0";
                                        if (VPLink2013SqlHelper.GetValueReaderBit(Reader, 3))
                                        {
                                            UtilisateurCrt.IsJedi = "1";
                                        }
                                        UtilisateurCrt.IsLaPlaine = "0";
                                        string strSite = VPLink2013SqlHelper.GetValueReader(Reader, 4);
                                        if (strSite.ToLower().Contains("plaine"))
                                        {
                                            UtilisateurCrt.IsLaPlaine = "1";
                                        }
                                    }
                                    VPLink2013SqlHelper.CloseReader(conn, Reader);
                                }
                                ContextTrace.AddTrace("UtilisateurCrt.Email : " + UtilisateurCrt.Email);
                                ContextTrace.AddTrace("UtilisateurCrt.IsInterne : " + UtilisateurCrt.IsInterne);
                                ContextTrace.AddTrace("UtilisateurCrt.IsManager : " + UtilisateurCrt.IsManager);
                            }
                        }
                    });
                }
                catch (Exception ex)
                {
                    ContextTrace.AddTrace("exception lors de la création utilisateur " + ex.Message);
                    ContextTrace.AddTrace(ex.StackTrace);
                }
                FileSerialization.CreateXmlFromObj(UtilisateurCrt, strFileCacheUtilisateur);
            }
        }

    }
}
